{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.24.1\n"
     ]
    }
   ],
   "source": [
    "# check scikit-learn version\n",
    "import sklearn\n",
    "print(sklearn.__version__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from numpy import genfromtxt\n",
    "from numpy import transpose\n",
    "from sklearn.datasets import make_classification\n",
    "from sklearn.cluster import Birch\n",
    "from matplotlib import pyplot\n",
    "d0 = genfromtxt('a.txt', delimiter=' ')\n",
    "d = transpose([d0[:,0] , d0[:,1]])\n",
    "fig = pyplot.figure(figsize=(10,10))\n",
    "ax = fig.add_subplot(111)\n",
    "\n",
    "ax.scatter(d[:, 0], d[:, 1],s=2)\n",
    "ax.invert_yaxis()\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.cluster import DBSCAN\n",
    "from numpy import where\n",
    "from numpy import unique\n",
    "\n",
    "dbscan = DBSCAN(eps=0.05, min_samples=20).fit(d)\n",
    "yhat = dbscan.labels_\n",
    "clusters = unique(yhat)\n",
    "# create scatter plot for samples from each cluster\n",
    "\n",
    "fig = pyplot.figure(figsize=(10,10))\n",
    "ax = fig.add_subplot(111)\n",
    "\n",
    "for cluster in clusters:\n",
    "# get row indexes for samples with this cluster\n",
    "    row_ix = where(yhat == cluster)\n",
    "# create scatter of these samples\n",
    "    ax.scatter(d[row_ix, 0], d[row_ix, 1],s=5)\n",
    "# show the plot\n",
    "ax.invert_yaxis()\n",
    "pyplot.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  },
  "vscode": {
   "interpreter": {
    "hash": "c16b8e7cd890ac90c4feb1952017976ccfafe2b3040592e0b28e297a008e60f9"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
